package net.pws.common.persistence;

import java.io.Serializable;
import java.util.Collection;

/**
 * �����˶���������CRUD�־û��������������������Ĳ��룬���£�ɾ��Ĺ��ܡ�
 * 
 * @see AbstractPersistenceService
 */
public interface PersistenceService {
    
    /**
     * Ĭ�ϵ�������
     */
    public static final int DEFAULT_BATCH_SIZE = 100;
    
    /**
     * ���ز�ѯ�ӿ�
     * 
     * @return
     */
    public Finder getFinder();
    
    /**
     * ������Ĭ�Ϸ���DEFAULT_BATCH_SIZE
     * 
     * @return
     */
    public int getBatchSize();
    
    /**
     * ����һ���µ�entity
     */
    public Serializable create(Object o);
    
    /**
     * ����entity
     */
    public void update(Object o);
    
    /**
     * ɾ��entity
     */
    public void remove(Object o);
    
    /**
     * ���idɾ���id��Ӧ��entity
     */
    public void removeById(Serializable id);
    
    /**
     * ִ�г־û�����
     */
    public void execute(UnitOfWork unitOfWork);
}
